<?php
    
    
    class PersonasController extends AppController 
	{
		public $helpers = array('Html', 'Form');
		public $uses = array('Direccion','Persona','User');	
		
		public function beforeFilter() 
		{
	        parent::beforeFilter();
	        $this->Auth->allow('create_usuario');
		}
		  
		#---------------------------------------------------#
		#---------------Funciones Primarias-----------------#
		#---------------------------------------------------#
		public function index() 
		{
			$this->layout = 'default_ini';	
			$this->set('persona', $this->Persona->find('all'));
		}
		public function loginadmin($nombre = null)
		{
			$this->layout = 'default_ini';	
			if ($this -> request -> is('login')) 
			{
				$nombre = $this -> request -> data[0];
				$contraseña = $this -> request -> data[1];
				
				if (!$nombre)
				{
					throw new NotFoundException(__('Invalid nombre'));
				}
				if (!$contraseña)
				{
					throw new NotFoundException(__('Invalid contra'));
				}

			}
		}
		
		
		public function index_busqueda($nombre = null) 
		{
			
			$this->layout = 'default_ini';	
			$options = array(
			'conditions' => array(
			    'OR' => array(
			        'Persona.nombre_persona_1 ' =>  $nombre
			        )
			    )
			);

			
			$this->set('persona', $this->Persona->find('all',$options));
		}
		public function add_persona()
		{
			$this->layout = 'default_ini';	
			$this->llenar_combo_box_direccion('1');
			if($this->request->is('post'))	
				$this->añadir_persona();
		}
		
		public function assign_to_persona()
		{
			$this->layout = 'default_ini';	
			$this->llenar_tabla_personas_sin_usuario();
			$this->llenar_tabla_usuarios_sin_persona();
			if ($this->request->is('post') || $this->request->is('put'))
			{
				
				
				if ($this->request->data['Assign']['ci_persona'] == '<Haz Click Aqui Para Seleccionar>')
				{
					$this->Session->setFlash(__('Debe seleccionar una persona'));
				}
				elseif ($this->request->data['Assign']['nombre_usuario'] == '<Haz Click Aqui Para Seleccionar>')	
				{
					$this->Session->setFlash(__('Debe seleccionar a un usuario'));
				}
				else
				{
					$persona_busq = $this->Persona->findByCiPersona($this->request->data['Assign']['ci_persona']);
					if ($persona_busq)
					{
						$user_busq = $this->User->findByUsername($this->request->data['Assign']['nombre_usuario']);
						if ($user_busq)
						{
								
							
							$user_update_array = array(
														'User' => array (
																			'id' => $user_busq['User']['id'],
																			'fecha_modificacion_user' => date('Y-m-d H:i:s'),
																			'persona_id' => $persona_busq['Persona']['id'],
																		)
														);
							
							if($this->User->save($user_update_array))
							{
								$this->setMessageFlash(1,'se asignó el usuario', null);	
								$this->redirect(	
												array(
														'controller' => 'users',
														'action' => 'index')
														);
								
							}
							else
							{
								$this->setMessageFlash(2,'no se pudo asignar el usuario' , null);	
							}
							
						}
						else
						{
							$this->setMessageFlash(3,'no se encontro el usuario' , null);
						}
					}
					else
					{
						$this->setMessageFlash(3,'no se encontro la persona', null);
					}
					
					
				}
				 

			}
		
		}
		
		
		public function view()
		{
			
		}
		#---------------------------------------------------#
		#---------------Funciones Secundarias---------------#
		#---------------------------------------------------#
		private function setMessageFlash($id,$mensaje,$nombre_mensaje)
		{
			if (is_null($nombre_mensaje))
			{
				$nombre_mensaje = 'flash';
			}
			switch ($id) 
			{
				case 1: // mensaje bueno
					$this->Session->setFlash($mensaje,'default',array('class'=>'success'),$nombre_mensaje);
					break;
				case 2: // mensaje malo
					$this->Session->setFlash($mensaje,'default',array('class'=>'error-message'),$nombre_mensaje);
					break;
				case 3: // mensaje cuidado
					$this->Session->setFlash($mensaje,'default',array('class'=>'notice'),$nombre_mensaje);
					
					break;
				
				default:
					
					break;
			}
		}
		private function llenar_combo_box_direccion($id)
		{
			
				$direccions = $this->Direccion->findAllByTipoDireccionId('1');																	
				$dir_nuevas = array();
				array_push($dir_nuevas,"---Seleccione una Opcion---");
				foreach($direccions as $direccion)
				{
					array_push($dir_nuevas,$direccion['Direccion']['nombre_direccion']);
				}		
				$this->set('dir_nuev',$dir_nuevas);	
			
		}
		private function llenar_tabla_personas_sin_usuario()
		{
			$persona = $this->Persona->query('SELECT 
												P.*
												FROM personas P
												WHERE P.id NOT IN (	
												    SELECT persona_id
												    FROM users
												    WHERE persona_id IS NOT NULL)'
											);	
				
			$this->set('persona_unset',$persona);
		}
		private function añadir_persona()
		{
			$this->Persona->create();
			$params_add = $this->request->data;

			if ($this->Persona->save($params_add)) 
			{
				$this->Session->setFlash(__('La Persona ha sido agregado'));
				#$this->redirect(array('action' => 'add_persona'));
			} 
			else 
			{
				$this->Session->setFlash(__('No se pudo agregar la persona'));
			}
			
		}
		private function llenar_tabla_usuarios_sin_persona()
		{
			$usuario = $this->Persona->query(
											 'SELECT U.* 
											  FROM users U
											  WHERE tipo_cuenta_id <> 1
											  AND persona_id IS NULL'
											);
			$this->set('user_unset',$usuario);	
		}
		
		
	}
    
?>